#include "tool.h"


//绘制矩形
void draw_rect(RotatedRect box, Mat img)
{
	Point2f pt[4];
	int i;
	for (i = 0; i < 4; i++)
	{
		pt[i].x = 0;
		pt[i].y = 0;
	}
	box.points(pt);

	line(img, pt[0], pt[1], CV_RGB(0, 225, 255), 2, 8, 0);
	line(img, pt[1], pt[2], CV_RGB(0, 225, 255), 2, 8, 0);
	line(img, pt[2], pt[3], CV_RGB(0, 225, 255), 2, 8, 0);
	line(img, pt[3], pt[0], CV_RGB(0, 225, 255), 2, 8, 0);
}


//数据滤波
float compensation(vector<float> savedis, float dis)
{

	if (savedis.size() != 10)//20
	{
		savedis.push_back(dis);
		return dis;
	}
	else
	{
		savedis.erase(savedis.begin());
		savedis.push_back(dis);
		float add = 0;
		for (unsigned int i = 1; i < 8; i++)
		{
			add = add + savedis[i];
		}
		float aveadd = add / 7.0;
		return (aveadd * 0.7 + savedis[8] * 0.3);
	}
}


//数据保护
int protectData(float &x, float &y, float &width, float &height, int rows, int cols)
{
	if (x > cols || y > rows || width < 0 || height < 0)
	{
		throw "Roi 出错！";
	}
	
	if (x < 0)
	{
		x = 0;
	}

	if (y < 0)
	{
		y = 0;
	}

	if (x + width > cols)
	{
		width = cols - x;
	}

	if (y + height > rows)
	{
		height = rows - y;
	}

	return 0;

}